iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 7
0
自我挑戰組

新手 R 語言學習紀錄系列 第 7

Day 7- R語言 邏輯&字符向量

  • 分享至 

  • xImage
  •  

Day 7- 邏輯&字符向量
(前言:那個,由於本人不是專業的程式設計師,寫的內容可能不是很正確,還請大家多多包含/指教 :D)

今天一次講兩個主題,所以有一點點長呢 :’)

R語言中向量可以再細分成兩個種類:原子向量(atomic vector)和列表(list)。這兩種向量總共有3個相同的屬性:類別、長度(包含的元素)及屬性。

原子向量包含邏輯向量、常數向量、數值向量及字符向量,另外還有兩種不常見的原子向量:複合向量(complex vector)及raw向量(找不到精確的對應翻譯,啊不過對岸好像有人說這是「原始向量」??)。

不同於原子向量,列表向量可以包含各式各樣的資料型態(文字、數字等),在R語言中,列表是以list函數表示。

今天要學的就是原子向量裡的邏輯及字符向量。

邏輯向量通常會有三種值:TRUE(正確), FALSE(錯誤), 及NA(無 (not available),
這部分以後會詳細做說明)

今天要用一個條件檢視一個向量的時候,要先把一個向量儲存到一個變數上。接下來,給這個變數一個條件,再儲存到另一個變數上,印出結果,即可以檢視邏輯結果。程式實作如下列:
https://ithelp.ithome.com.tw/upload/images/20190923/20120887AlqIrnWuIY.png
(註:#萌萌的小井字號代表註解,要對程式碼進行註解時在註解前面打井字號,R在跑程式的時候就會自動跳過無辜的井字號跟後面的字,不會把他們嚕成一團 ˊuˋ。)
結果如下列:
https://ithelp.ithome.com.tw/upload/images/20190923/20120887k97u50WD5i.png
(因為0.5, -10小於1,因此輸出結果FALSE,其餘兩數大於1,輸出結果TRUE)
(大/小等於及不等於運算子寫法:大等於>= / 小等於<=/ 不等於 !=/ 確切等於==

如果要再使用另一個條件檢視同一變數(num_vect),只要先鍵入變數名稱,再鍵入條件,即可檢視新條件的邏輯結果。

其他R語言邏輯符號包含:
(假設a, b為兩個不同的敘述)

  1. a | b (垂直條):R語言中計算邏輯的 “OR”,也就代表a或b其中一個敘述是正確的。
  2. a & b: 代表 “AND”,a及b皆正確

接下來學習的是字符向量
要新增一個字符向量很簡單,方法就和新增一個數字向量差不多,只要輸入函數、引號(因為要讓R知道這些字是「字串」)及最重要的字符。例如建立一個my_char變數,內有"My" "name" "is"三個字:my_char <- c("My", "name", "is")
上面的例子將三個字my, name, is拆成三個字串,若今天要將三個字串合併成一個字串,用paste函數及collapse引數組合(Combine!!!),寫法如下:paste(my_char, collapse = " ")
啊不過要記得這邊的兩個引號之間必須為空白,因為我們要告訴R用空格取代引號。輸出結果就會是:”My name is”

同時,我們也可以在字符數列的後面加上另外一個字串,方法就像這樣:c(my_char, "Dave"),這樣輸出的資料就會是:”My” “name” “is” “Dave”

Paste函數也有第二個用法,也就是先在指定兩個字串後加上sep引數,要R把兩個字串拆散,並使用替代符號。例如:paste("Hello", "world!", sep = " ")

剛剛說的都是用空格取代字串的中間間隔,今天如果要用字符取代字串的中間間隔,一樣可以用paste函數。方法如下列:paste(1:3, c("X", "Y", "Z"), sep = "")。這邊我們用1-3的數列與XYZ字串結合,數字與字母中間沒有空格,輸出結果為:"1X" "2Y" "3Z"

今天如果要將一個有限數量的數字/字串與多個數字/字串結合時,R 會自動重複使用有限的數字或字串。例如:paste(LETTERS, 1:4, sep = "-"),這行程式碼有26個字串(這邊的LETTERS是R語言的一個變數,會自動輸入26個英文字母),要與1-4的數列結合,中間以 “-“ 符號做空格,輸出結果如下:
https://ithelp.ithome.com.tw/upload/images/20190923/20120887HOTrnTBWK6.png
這邊值得注意的是,數字1,2,3,4被R強迫當了字串(因為數字也在引號內)

字符與邏輯數列的學習就到這邊告一段落啦 ˊˇˋ(灑小花花,

明天繼續寫缺失數據吧

額外參考資料:

  1. https://codertw.com/%E4%BA%BA%E5%B7%A5%E6%99%BA%E6%85%A7/7635/

上一篇
Day 6- R語言 數列
下一篇
Day 8- R語言 缺失數據(遺漏值)
系列文
新手 R 語言學習紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言